#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMediaPlayer>
#include <QMediaPlaylist>
#include <QCloseEvent>
#include <QMessageBox>
class QListWidget;
class QListWidgetItem;
class WidgetProxy;

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();

Q_SIGNALS:
    void mouseDoubleClicked();

private slots:
    void addSongs();//添加歌曲
    void playPause();//暂停
    void playStop();//停止
    void playNext();//下一首
    void playPrevious();//上一首
    void posChanged(qint64 pos);//当歌曲播放进度变化时，该槽函数响应，功能是让进度条与歌曲播放进度保持一致
    void durChanged(qint64 dur);//切歌时，设置进度条最大值为歌曲长度（以ms为单位）
    void setPos(int pos);//当拖动进度条改变进度时，设置歌曲的播放进度与之保持一致
    void clearList();//清空列表
    void delectSong();//删除歌曲
    void volumeSilence();//静音
    void setVol(int vol);//音量条
    void hideShow();//隐藏界面控件
    void redVolume();//快捷键 减小音量
    void addVolume();//快捷键 增大音量
    void playLoop();//循环播放模式
    void randomMode();//列表中随机顺序播放
    void sequentialMode();//当前项目开始播放，播放到最后一个项目时停止
    void currentItemInLoop();//单曲循环

private:
    Ui::Widget *ui;

private:
    QMediaPlayer* player;
    QMediaPlaylist* playList;
    QAction* action_hideShow;
    QAction* action_addSongs;
    QAction* action_playPause;
    QAction* action_stop;
    QAction* action_previous;
    QAction* action_next;
    QAction* action_addVolume;
    QAction* action_redVolume;
    QAction* action_quit;
    QAction* action_playLoop;
    QAction* action_randomMode;
    QAction* action_sequentialMode;
    QAction* action_currentItemInLoop;

protected:
    void contextMenuEvent(QContextMenuEvent* );//右键菜单
    //这是一个虚函数，继承自QEvent.只要重写了这个虚函数，当你按下窗口右上角的"×"时，就会调用你所重写的此函数.
    void closeEvent(QCloseEvent*event);
     void mouseDoubleClickEvent(QMouseEvent *mevent);//双击事件
    void sender();
};

#endif // WIDGET_H
